<?php

/**
 * Product form.
 *
 * @package    IPLIFE
 * @subpackage form
 * @author     alexey.shapran@gmail.com
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class ProductForm extends BaseProductForm
{
  public function configure()
  {
    $this->setWidgets(array(
      'id'          => new sfWidgetFormInputHidden(),
      'category_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Category'), 'add_empty' => false)),
      'title'       => new sfWidgetFormInputText(),
      'short'       => new sfWidgetFormTextarea(array(), array('rows'=>'4', 'cols'=>'30')),
      'alias'       => new sfWidgetFormInputText(array(),array('')),
      'body'        => new sfWidgetFormTextarea(array(), array('rows'=>'4', 'cols'=>'50')),
      'img'         => new sfWidgetFormInputFileEditable(array('file_src'=> sfConfig::get('sf_upload_dir').'/products/'.$this->getObject()->getImg(),
															'is_image'  => true, 
															'with_delete'=>true,
															'delete_label' => 'удалить изображение',
															'template'  => ($this->getObject()->getImg())	?	'<div><img width="100px" src="/uploads/products/thumbnail_100_100_n/'.$this->getObject()->getImg().'" /><br />%input%<br /><br />%delete% %delete_label%</div>'
																												:	'<div>%input%</div>'), array()),
      'price'       => new sfWidgetFormInputText(),
      'price_usd'   => new sfWidgetFormInputText(),
      'artikul'     => new sfWidgetFormInputText(),
      'rank'        => new sfWidgetFormInputHidden(),
      'user_id'     => new sfWidgetFormInputHidden(),
      '_csrf_token' => new sfWidgetFormInputHidden(),
    ));

    $this->setValidators(array(
      'category_id' => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Category'), 'required' => false)),
      'title'       => new sfValidatorString(array('max_length' => 255, 'required' => true)),
      'short'       => new sfValidatorString(array('required' => false)),
      'alias'       => new sfValidatorAnd ( array(
    							new sfValidatorRegex(array('pattern' => '/^[-a-zA-Z0-9]+$/', 'required' => true), array('invalid'=>'url должен состоять из латинских букв, цифр и тире')),
    							new sfValidatorString(array('required'=>true),array())
    							)),
      'body'        => new sfValidatorString(array('required' => false)),      
      'price'   => new sfValidatorNumber(array('required' => false)),
      'price_usd'   => new sfValidatorNumber(array('required' => false)),
      'artikul'     => new sfValidatorString(array('max_length' => 32, 'required' => false)),
      'rank'        => new sfValidatorInteger(array('required' => false)),      
      'user_id'     => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('sfGuardUser'), 'required' => false)),
    ));
    $this->widgetSchema->setLabels(array(
    	'category_id'	=>'Выберите категорию:',
    	'title'			=>'Название товара:',
    	'short'			=>'Короткое описание:',
    	'alias'			=>'URL-ссылка:',
    	'body'			=>'Полное описание:',
    	'img'			=>'Фото:',
    	'price'			=>'Цена:',
    	'price_usd'		=>'Цена товара ($):',
    	'artikul'		=>'Артикул:',
    	'rank'			=>'Ранг:'));

    $this->validatorSchema['img'] = new sfValidatorFile(array( 
			'required'   => false, 
			'path'       => sfConfig::get('sf_upload_dir').'/products', 
			'mime_types' => 'web_images',
			'max_size' => 100*1024 //100Kb
		));
	$this->widgetSchema->setHelps(array(
		'category_id'	=> 'категория для вашего товара',
		'title'			=> 'название товара',
		'short'			=> 'короткое описание',
		'img'			=> 'картинка в формате .jpg, .gif, .png размером до 100 КБ',
		'alias'			=> 'путь к товару (латинскиим буквами), будет отображаться в адресе сайта,<br /> например для "www.iplife/product/antivandalnie_yaschiki"<br /> нужно ввести "antivandalnie_yaschiki"',
		'body'			=> 'подробное описание товара',
		'price'			=> 'цена товара (грн)',
		'price_usd'		=> 'цена товара (доллары)',
		'artikul'		=> 'артикул',
		'rank'			=> 'ранг'));
	unset($this['alias']);
  }  
}
